#ifndef HEAPSORT_HPP
#define	HEAPSORT_HPP

#include "ArrayList.hpp"
#include "Sorters/Sorter.hpp"

class HeapSorter : public Sorter {
public:
    HeapSorter();
    HeapSorter(const HeapSorter& orig);
    virtual ~HeapSorter();

    void sort(OwnCollections::ArrayList<int>& vector);

private:
    
    /**
     * Выполняет построение пирамиды для vector[i]
     * i меняется от 0 до n - 1
     * Предполагается, что vector[i+1] .. vector[n-1] уже образуют
     * пирамиду
     * @param vector
     * @param i
     * @param n
     */
    void screening(OwnCollections::ArrayList<int>& vector, int i, int n);

};


#endif	/* HEAPSORT_HPP */

